iT邦幫忙

2024 iThome 鐵人賽

DAY 11
0
Security

腳本小子的滲透測試學習筆記系列 第 11

第11天:CEH第四章列舉技術

  • 分享至 

  • xImage
  •  

Enumeration 列舉

是指攻擊者透過建立與目標系統的主動連線並執行特定的查詢,以取得更多目標相關資訊的過程。攻擊者會使用所提取的資訊來識別可能進行系統攻擊的點,並執行密碼攻擊,以未經授權的方式存取系統資源。列舉技術通常是在內部網路環境中進行。

入侵者可能列舉到的資訊包括:

  • 網路資源
  • 網路共享
  • 路由表
  • 稽核與服務設定
  • SNMP 和 FQDN 資訊
  • 機器名稱
  • 使用者和群組
  • 應用程式和標籤

列舉技術

  1. 使用 電子郵件 ID 提取使用者名稱
  2. 使用 預設密碼 提取資訊
  3. 暴力破解 Active Directory
  4. 使用 DNS 區域傳送 提取資訊
  5. Windows 提取 使用者群組
  6. 使用 SNMP 提取使用者名稱

常用來列舉的port

Port Service Description
21 FTP File Transfer Protocol, 用於檔案傳輸
22 SSH Secure Shell, 用於加密遠程登入與管理
23 TELNET 不加密的遠程登入協議
25 SMTP Simple Mail Transfer Protocol, 用於電子郵件傳送
53 DNS Domain Name System, 用於域名解析
69 TFTP Trivial File Transfer Protocol, 簡單的檔案傳輸協議
80 HTTP HyperText Transfer Protocol, 用於網頁傳輸
88 Kerberos 一種驗證協議,用於安全的身份驗證
123 NTP Network Time Protocol, 用於時間同步
111 RPC (Linux) Remote Procedure Call, 用於進行遠程程序調用 (Linux 平台)
135 RPC (Windows) Remote Procedure Call, 用於進行遠程程序調用 (Windows 平台)
137 NetBIOS 用於局域網中的資源共享與命名解析
139 NetBIOS Session NetBIOS 協議的會話服務,用於檔案和印表機共享
161 SNMP Simple Network Management Protocol, 用於網路管理
179 BGP Border Gateway Protocol, 用於路由選擇
389 LDAP Lightweight Directory Access Protocol, 用於目錄服務
445 SMB Server Message Block, 用於網路文件共享
514 syslog 系統日誌服務,用於記錄系統事件
636 LDAP SSL 安全的 LDAP 協議,透過 SSL 保護傳輸
1433 SQL Server Microsoft SQL Server 的預設資料庫連接埠
2049 NFS Network File System, 用於文件共享
3268 LDAP GC Global Catalog, 用於在 LDAP 中查詢全域目錄
3269 LDAP GC SSL 使用 SSL 保護的全域目錄查詢
3306 MYSQL MySQL 資料庫服務的預設連接埠
3389 RDP Microsoft Remote Desktop Protocol, 用於遠程桌面連接
8080 Tomcat 一種 Java Servlet 容器,用於運行網頁應用
27017 MongoDB NoSQL 資料庫 MongoDB 的預設連接埠

NetBIOS 列舉

此部分描述了 NetBIOS 列舉、獲取的資訊以及各種 NetBIOS 列舉工具。NetBIOS 被認為是首先用於列舉的工具,因為它能提取大量有關目標網路的敏感資訊,如用戶和網絡共享資源。

列舉 Windows 系統的第一步是利用 NetBIOS API。NetBIOS 最初是作為客戶端軟件訪問局域網(LAN)資源的 API 開發的。Windows 使用 NetBIOS 進行文件和打印機共享。NetBIOS 名稱是一個 16 字符的 ASCII 字符串,用於識別 TCP/IP 上的網絡設備,其中 15 個字符用於設備名稱,第 16 個字符用於服務或記錄類型。

NetBIOS 使用以下端口:

  • UDP 端口 137(名稱服務)
  • UDP 端口 138(數據報服務)
  • TCP 端口 139(會話服務)

攻擊者通常針對 NetBIOS 服務,因為它易於利用且在 Windows 系統上運行,即使不使用時也可能開啟。攻擊者使用 NetBIOS 列舉來獲取以下資訊:

  • 屬於某個域的計算機列表
  • 網絡中每台主機上的共享列表
  • 策略和密碼

攻擊者若發現某個 Windows 系統開啟了 139 端口,可以檢查是否能訪問或查看遠程系統上的資源。 不過,列舉 NetBIOS 名稱的前提是遠程系統必須啟用了文件和打印機共享。根據共享資源的可用性,NetBIOS 列舉可能允許攻擊者讀取或寫入遠程計算機系統,甚至發動拒絕服務(DoS)攻擊。

NetBIOS 名稱的對應代碼

名稱 NetBIOS 代碼 類型 獲取的資訊
主機名稱 00 唯一 主機名稱
網域名稱 00 群組 網域名稱
主機名稱 03 唯一 電腦上的訊息服務
使用者名稱 03 唯一 已登入使用者的訊息服務
主機名稱 20 唯一 伺服器服務運行中
網域名稱 1D 群組 子網的主瀏覽器名稱
網域名稱 1B 唯一 主網域瀏覽器名稱,識別主域控制器 (PDC)
網域名稱 1E 群組 瀏覽器服務選舉

Nbtstat Utility

Source: https://docs.microsoft.com

nbtstat 參數及其功能所整理的表格:

Nbtstat 參數 功能
-a RemoteName 顯示遠端電腦的 NetBIOS 名稱表,其中 RemoteName 是遠端電腦的 NetBIOS 名稱。
-A IP Address 顯示遠端電腦的 NetBIOS 名稱表,並以遠端電腦的 IP 位址(點分十進制格式)指定。
-c 列出 NetBIOS 名稱快取的內容,包括名稱表和它們對應的已解析 IP 位址。
-n 顯示由 NetBIOS 應用程式(如伺服器和重定向器)本地註冊的名稱。
-r 顯示通過廣播或 WINS 伺服器解析的所有名稱的數量。
-R 清除名稱快取,並重新加載 Lmhosts 文件中的所有 #PRE 標籤條目。
-RR 釋放並重新向名稱伺服器註冊所有名稱。
-s 列出 NetBIOS 會話表,將目標 IP 位址轉換為計算機 NetBIOS 名稱。
-S 列出當前的 NetBIOS 會話及其狀態和 IP 位址。
Interval 重新顯示所選統計資料,在每次顯示時暫停,時間由 Interval 指定的秒數決定。

常用的 NetBIOS 列舉工具:

NetBIOS Enumerator

來源: NetBIOS Enumerator 官方網站

NetBIOS Enumerator 是一款列舉工具,顯示如何使用遠端網絡支援並處理其他網絡協議(如 SMB)。攻擊者利用 NetBIOS Enumerator 來列舉指定範圍內 IP 位址的詳細資訊,例如 NetBIOS 名稱、使用者名稱、網域名稱和媒體存取控制(MAC)地址等。

此工具對於網路安全分析和漏洞檢測非常有用,特別是在需要了解遠端系統的共享資源和系統細節時。

Nmap

nmap -sV -v --script nbstat.nse <target IP address>

PsTools 套件來列舉使用者帳號,這有助於透過命令行控制和管理遠端系統。

以下是 PsTools 套件中的工具及其功能簡介:

  • PsExec: 遠端執行程序
  • PsFile: 顯示遠端打開的文件
  • PsGetSid: 顯示計算機或使用者的 SID(安全識別碼)
  • PsKill: 根據名稱或程序 ID 終止進程
  • PsInfo: 顯示系統資訊
  • PsList: 列出進程的詳細資訊
  • PsLoggedOn: 顯示本地登錄和通過資源共享登錄的使用者
  • PsLogList: 匯出事件日誌記錄
  • PsPasswd: 更改帳戶密碼
  • PsShutdown: 關閉或重啟遠端電腦

Net View 是一個命令行工具,用於顯示指定工作群組中的計算機列表或某台指定計算機上的共享資源。它可以通過以下方式使用:

  • net view <computername>
    • 在此命令中,<computername> 是要顯示其資源的特定計算機名稱或 IP 地址。
  • net view <computername> /ALL
    • 此命令顯示指定遠端計算機上的所有共享資源,包括隱藏的共享。
  • net view /domain
    • 此命令顯示域中的所有共享資源。
  • net view /domain:
    • 此命令顯示指定域中的所有共享資源。

SNMP(簡單網路管理協定)的列舉

涉及使用 SNMP 在目標系統上列舉使用者帳戶和設備。SNMP 架構由一個管理者和多個代理構成,代理嵌入於每個網絡設備中,而管理者安裝在單獨的計算機上。

SNMP 包含兩個用來存取及配置代理的密碼:

  • 讀取社區字串(Read community string):預設為公開,允許檢視設備或系統的配置資訊。
  • 讀/寫社區字串(Read/write community string):預設為私人,允許遠端編輯設備或系統的配置。

攻擊者經常利用預設的社區字串來獲取設備資訊,並藉此列舉網絡資源(例如主機、路由器、設備和共享資源)以及網絡信息(例如 ARP 表、路由表和流量資訊)。

SNMP 的工作原理基於一個分佈式架構,包括 SNMP 管理者、SNMP 代理和多個相關元件。以下是一些與 SNMP 相關的常見命令:

  1. GetRequest:由 SNMP 管理者用來向 SNMP 代理請求資訊。
  2. GetNextRequest:由 SNMP 管理者連續使用,以檢索存儲在陣列或表格中的所有數據。
  3. GetResponse:由 SNMP 代理用來回應 SNMP 管理者的請求。
  4. SetRequest:由 SNMP 管理者用來修改 SNMP 代理管理資訊庫(MIB)中的參數值。
  5. Trap:由 SNMP 代理用來通知預先配置的 SNMP 管理者某些事件的發生。

這些命令使 SNMP 在網絡管理中能夠有效地進行監控和控制。

管理資訊庫 (MIB) 是一個虛擬資料庫,包含所有由 SNMP 管理的網路物件的正式描述。它是一個層次化組織的資訊集合,提供了 SNMP 代理資訊和存儲的標準表示法。MIB 元素透過物件標識符 (OID) 識別。OID 是分配給物件的數字名稱,從 MIB 樹的根節點開始,能夠唯一識別 MIB 層次中的物件。

MIB 所管理的物件包括兩種類型:

  1. 標量物件:定義單個物件實例。
  2. 表格物件:定義一組相關的物件實例。

OID 包含物件的類型(如計數器、字串或位址)、訪問級別(如讀取或讀/寫)、大小限制和範圍資訊。SNMP 管理者使用 MIB 作為代碼本,將 OID 轉換為人類可讀的顯示內容。使用者可以透過網頁瀏覽器訪問 MIB 的內容,輸入 IP 地址和 Lseries.mib,或者輸入 DNS 資料庫名稱和 Lseries.mib。

例如:

Microsoft 提供了隨 Windows SNMP 服務一起安裝的 MIB 列表。主要的 MIB 包括:

  1. DHCP.MIB:監控 DHCP 伺服器與遠程主機之間的網路流量。
  2. HOSTMIB.MIB:監控和管理主機資源。
  3. LNMIB2.MIB:包含工作站和伺服器服務的物件類型。
  4. MIB_II.MIB:使用簡單架構和系統管理基於 TCP/IP 的網際網路。
  5. WINS.MIB:用於 Windows 互聯網名稱服務 (WINS)。

Enumerating SNMP using SnmpWalk and Nmap

SNMPv2 的一些常用命令,使用 community string "public" 來進行列舉:

  1. 列舉 SNMPv2 的命令:

    snmpwalk -v2c -c public <Target IP Address>
    
  2. 搜尋已安裝軟體的命令:

    snmpwalk -v2c -c public <Target IP Address> hrSWInstalledName
    
  3. 查詢主機上 RAM 大小的命令:

    snmpwalk -v2c -c public <Target IP Address> hrMemorySize
    
  4. 將 OID 值更改為其他值的命令:

    snmpwalk -v2c -c public <Target IP Address> <OID> <New Value>
    
  5. 更改 sysContact OID 的命令:

    snmpwalk -v2c -c public <Target IP Address> sysContact <New Value>
    

使用 Nmap 進行 SNMP 列舉的一些命令,攻擊者可以使用這些命令來檢索與目標 SNMP 伺服器相關的資訊:

  1. 檢索 SNMP 服務和運行進程:

    nmap -sU -p 161 --script=snmp-processes <Target IP Address>
    

    此命令將檢索目標主機上所有正在運行的 SNMP 進程及其相關連接埠資訊。

  2. 檢索 SNMP 伺服器類型和作業系統資訊:

    nmap -sU -p 161 --script=snmp-sysdescr <Target IP Address>
    

    此命令會顯示有關 SNMP 伺服器類型和作業系統的詳細資訊。

  3. 檢索目標機器上運行的所有應用程式清單:

    nmap -sU -p 161 --script=snmp-win32-software <Target IP Address>
    

    此命令將列出目標機器上運行的所有應用程式。

常用的 SNMP 列舉工具

  1. snmp-check
    • 此工具可用來列舉 SNMP 設備,並以人性化且易讀的格式顯示輸出結果。
  2. SoftPerfect Network Scanner
    • SoftPerfect 網絡掃描工具可以發現共享的文件夾,並通過 WMI、SNMP、HTTP、SSH 和 PowerShell 檢索設備的幾乎所有資訊。
  3. 其他 SNMP 列舉工具

LDAP 列舉

  1. LDAP 是一種網際協議 (Internet Protocol):用來存取分佈式目錄服務。
  2. 目錄服務通常提供有組織的記錄集合,這些記錄通常具有層次結構和邏輯結構,例如公司電子郵件目錄。
  3. LDAP 會話的開始:客戶端透過連接到目錄系統代理 (DSA) 並向其發送操作請求來啟動 LDAP 會話,通常使用 TCP 端口 389。
  4. 資料的傳輸:客戶端和伺服器之間的資料傳輸使用基本編碼規則 (BER)。
  5. 攻擊者利用 LDAP 來收集資訊:攻擊者可查詢 LDAP 服務以收集有效的用戶名、地址及部門詳細資訊,進一步進行攻擊。

LDAP 列舉攻擊可以手動或自動進行

手動 LDAP 列舉

攻擊者可以使用 Python 進行手動 LDAP 列舉,以下是使用 Python 進行 LDAP 列舉的步驟:

步驟:

  1. 使用 Nmap 檢查目標 LDAP 伺服器是否在端口 389 (LDAP) 或端口 636 (安全 LDAP) 上監聽。

  2. 如果伺服器正在這些指定的端口上監聽,通過以下命令安裝 LDAP 來開始列舉:

    pip3 install ldap3
    
  3. 如下所示,建立一個伺服器對象(server),指定目標的 IP 地址或主機名以及端口號。如果伺服器在安全 LDAP 上監聽,指定 use_ssl = True

  4. 指定 get_info = ldap3.ALL 來檢索目錄系統代理 (DSA) 特定的條目(DSE)命名上下文。

  5. 建立連接對象 connection,並調用 bind() 來啟動連接。如果連接成功,螢幕上會顯示 True

    >>> import ldap3
    >>> server = ldap3.Server('目標 IP 地址', get_info=ldap3.ALL, port=389)
    >>> connection = ldap3.Connection(server)
    >>> connection.bind()
    True
    
  6. 接下來,可以使用以下腳本來檢索資訊,如域名和命名上下文:

    >>> server.info
    
  7. 獲得命名上下文後,使用以下腳本檢索所有目錄對象:

    >>> connection.search(search_base='DC=DOMAIN,DC=DOMAIN', search_filter='(&(objectClass=*))', search_scope='SUBTREE', attributes='*')
    True
    >>> connection.entries
    
  8. 使用以下腳本轉儲整個 LDAP:

    >>> connection.search(search_base='DC=DOMAIN,DC=DOMAIN', search_filter='(&(objectClass=person))', search_scope='SUBTREE', attributes='userPassword')
    True
    >>> connection.entries
    

這些步驟可以幫助攻擊者手動進行 LDAP 列舉,從而獲取有關系統的資訊。

自動化的 LDAP 列舉

可以通過使用 Nmap 的 NSE 腳本來進行。攻擊者可以使用 ldap-brute 腳本來暴力破解 LDAP 認證。默認情況下,該腳本會使用內建的用戶名和密碼列表。使用 userdbpassdb 腳本參數,可以指定自定義的用戶名和密碼列表來進行破解。

使用範例:

nmap -p 389 --script ldap-brute --script-args 'ldap.base="cn=users,dc=CEH,dc=com"' <Target IP Address>

說明:

  • ldap-brute: 這是 Nmap 中的 NSE 腳本,用來針對 LDAP 伺服器進行暴力破解。
  • ldap.base: 指定 LDAP 搜索的基準,如此處的 "cn=users,dc=CEH,dc=com"
  • <Target IP Address>: 目標 LDAP 伺服器的 IP 地址。

這種方式可以快速且自動化地進行 LDAP 認證嘗試,有助於攻擊者獲取伺服器的訪問權限。

LDAP 列舉工具

  1. Softerra LDAP Administrator:提供了進行 LDAP 開發、部署和目錄管理的各種重要功能。
  2. ldapsearch:攻擊者用來列舉 AD 用戶,允許他們與 LDAP 伺服器建立連接,並使用特定的篩選條件執行不同的搜索操作。

其他 LDAP 列舉工具:

  • AD Explorer:來自 Microsoft 的工具,用於探索 Active Directory。
  • LDAP Admin Tool:提供 LDAP 伺服器管理功能的軟件。
  • LDAP Account Manager:LDAP 賬戶管理工具。
  • LDAP Search:另一個用於 LDAP 搜索的工具。

NTP(Network Time Protocol)和NFS(Network File System)是網路管理中的兩個重要協定,但管理員經常在考慮安全性時忽略它們。然而,這兩個協定提供的信息對攻擊者可能非常有價值,尤其是如果攻擊者可以正確地查詢這些服務。

NTP 列舉:

  • NTP 列舉可以幫助攻擊者獲取網路中的多種信息,這包括:
    • 連接到 NTP 伺服器的客戶端列表
    • 客戶端的 IP 位址
    • NTP 伺服器時間同步的詳細信息
    • 時間戳和其他關於伺服器操作的信息

攻擊者可以通過 NTP 列舉指令來查詢這些信息,例如:

  • ntpq -p 列出 NTP 伺服器的對等伺服器和同步狀態。
  • ntpdc -c sysinfo 查詢 NTP 伺服器的系統信息。

常見的 NTP 列舉工具包括:

  • NTPQ:用於查詢 NTP 伺服器的狀態。
  • NTPDC:用於管理 NTP 伺服器。

NFS 列舉:

  • NFS 列舉允許攻擊者從 NFS 伺服器中收集有關遠端檔案存取的多種信息,如:
    • 已連接到 NFS 伺服器的客戶端及其 IP 地址
    • 出口目錄(Exported Directories)

攻擊者可以使用命令來列出 NFS 伺服器的共享目錄,例如:

  • showmount -e <target>:列出 NFS 伺服器上的所有已出口目錄。

常見的 NFS 列舉工具包括:

  • showmount:用於列出 NFS 伺服器的出口目錄。
  • nmap:帶有特定腳本(如 nmap -sV --script=nfs-ls,nfs-statfs,nfs-showmount)來掃描 NFS 伺服器。

這些列舉技術可以幫助攻擊者識別潛在的漏洞,並利用這些漏洞進一步滲透目標網路。

NTP 列舉指令介紹

NTP 列舉是指攻擊者使用特定的指令查詢 NTP(Network Time Protocol)伺服器,從中獲取有價值的網路信息。以下是幾個常用的 NTP 列舉工具及其用途:

  1. ntpdate

    • 用於設定系統時鐘時間與 NTP 伺服器同步。
    • 介紹: ntpdate 工具允許使用者手動從指定的 NTP 伺服器獲取時間並同步系統時鐘。它對時間同步非常有用,但不會持續同步(如 NTP 服務程式 ntpd 一樣)。攻擊者可以使用此工具來確定 NTP 伺服器的準確性。
  2. ntptrace

    用來追蹤時間來源伺服器的層級。

    • 介紹: ntptrace 用於追蹤 NTP 伺服器的時間來源,顯示 NTP 伺服器時間從哪些上層伺服器來同步。這對於瞭解網路中 NTP 伺服器的層級結構有幫助,攻擊者可以用來分析哪些伺服器可能是同步的來源伺服器。
  3. ntpdc

    • 用來檢查和調整 NTP 伺服器的配置。
    • 介紹: ntpdc 是一個互動式的工具,允許使用者查詢或更改 NTP 伺服器的運行狀態及配置。它提供了比 ntpq 更高級的功能,攻擊者可用來獲取有關 NTP 伺服器配置的詳細信息,並檢查伺服器是否易於攻擊。
  4. ntpq

    • 用來檢查 NTP 伺服器的運行狀態。
    • 介紹: ntpq 是一個標準的 NTP 客戶端工具,允許使用者查詢 NTP 伺服器的對等伺服器、同步狀態和配置參數。它對於攻擊者了解伺服器的同步狀態以及伺服器與哪些上層伺服器進行通信非常有用。
  • PRTG Network Monitor
    • 簡介: 這是一個包括 SNTP Sensor monitor 的簡單網路時間協議(SNTP)伺服器,能顯示伺服器的回應時間,以及與本地系統時間的差異。
  • NTP Enumeration Tools
    • Nmap: 一個常用的網路掃描工具,可以用於檢查 NTP 伺服器的狀態。
    • Wireshark: 一個強大的網路封包分析工具,能夠監聽 NTP 流量,幫助分析伺服器的行為。
    • udp-proto-scanner: 一個用於掃描 UDP 協議的專門工具,可用來檢查 NTP 服務。
    • NTP Server Scanner: 這是專門用來掃描 NTP 伺服器的工具,能夠找到並分析伺服器的配置和運行狀況。

NFS 列舉:

  • NFS 系統: NFS(Network File System)通常在需要集中管理重要資源的電腦網路中實作。

  • 列舉作用: 攻擊者可以透過 NFS 列舉來識別伺服器上匯出的目錄(exported directories)、與 NFS 伺服器相連的客戶端清單、以及與這些 IP 地址相關的共享資料。

  • rpcinfo 命令

    rpcinfo -p 10.10.1.19
    

    這個命令會顯示目標伺服器 10.10.1.19 上 NFS 服務的開放端口和運行狀態。

  • showmount 命令

    showmount -e 10.10.1.9
    

    這個命令會顯示目標伺服器 10.10.1.9 的匯出共享目錄。

NFS 列舉工具

兩個 NFS 列舉工具:

  1. RPCScan:

    • 這個工具與 RPC 服務通信,並檢查 NFS 共享中的配置錯誤。
    python3 rpc-scan.py 10.10.1.19
    
  2. SuperEnum:

    • SuperEnum 包含一個腳本,用於對任何開放端口進行基本的列舉。
    ./SuperEnum
    

待續,明天會將剩下的列舉技術說完


上一篇
第10天:CEH第三章網路服務掃描(續)
下一篇
第12天:CEH第四章列舉技術(續)
系列文
腳本小子的滲透測試學習筆記16
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言